package keer.httpinterface.proxy;

import keer.httpinterface.HttpInterceptor;

/**
 * 定义一个工厂接口，用于创建HTTP拦截器实例
 * 此接口允许调用者指定拦截器的类型，并由工厂负责实例化
 * @see HttpInterceptor
 *
 * @author Keer
 * @since 1.0.0
 */
public interface InterceptorFactory {

    /**
     * 创建指定类型的HTTP拦截器实例
     *
     * @param interceptorClass 指定要创建的HTTP拦截器的类，必须是HttpInterceptor的子类
     * @return 返回创建的HTTP拦截器实例
     * @throws Exception 如果在创建拦截器实例过程中发生错误，则抛出异常
     */
    HttpInterceptor create(Class<? extends HttpInterceptor> interceptorClass) throws Exception;

    /**
     * 提供一个静态方法来获取InterceptorFactory的实例
     * 此方法隐藏了具体工厂的实现细节，简化了外部调用
     *
     * @return 返回InterceptorFactory的一个实例，具体类型为DefaultInterceptorFactory
     */
    static InterceptorFactory getInstance(){
        return new DefaultInterceptorFactory();
    }
}
